home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Graphics Plus
/
Graphics Plus.iso
/
general
/
visulztn
/
sphinx
/
sphinx.lha
/
examples
/
grid.c
< prev
next >
Wrap
C/C++ Source or Header
|
1993-03-27
|
4KB
|
148 lines
/*
Programmes externes de Sphinx : grid .
Ce programme recoit 3 images de sphinx (une dans chaque banc). Sur
chaque image, une grille de points est tracee (epaisseur 4 pixels,
pas 64 pixels). Les images resultats sont renvoyees a Sphinx.
Compilation des sous programmes externes
cc -c extlib.c extsemaphore.c
f77 -c extsubdrop.f
sur DEC SUN et SG
cc -c UNDER_SGSUN.c
ar r extlib.a *.o
Pour compiler ce programme sur RS600 :
cc grid.c -o grid.out extlib.a -lxlf -lm -lg
Pour compiler ce programme sur DecStation :
cc grid.c -o grid.out extlib.a -lF77 -lI77 -lU77 -lfor -lUfor \
-lots -lutil -lm -li
Pour compiler ce programme sur HP400 :
cc grid.c -o grid.out extlib.a -lddhil -lsb1 -lsb2 -lI77 -lF77 \
-ln -lm -lc
Pour compiler ce programme sur HP700 :
cc grid.c -o grid.out extlib.a -lm -lcl
Pour compiler ce programme sur HP800 :
cc grid.c -o grid.out extlib.a -lddhil -lsb1 -lsb2 -lcl -lnlsstubs \
-lisamstubs -ln -lm
Pour compiler ce programme sur Sun :
cc grid.c -o grid.out extlib.a -lF77 -lm
Pour compiler ce programme sur Silicon :
cc grid.c -o grid.out extlib.a -lbsd -lfgl -lgl -lm -lF77 -lI77 \
-lU77 -lisam -lm -lmpc
Pour que ce programme soit connu de Sphinx, ajouter au fichier
[directory de sphinx] /files/wind_file_EXT deux lignes :
[directory de rangement du binaire ]/grid.out
Grille. (ligne de commentaire)
*/
static void traiter_image();
main(argc,argv)
int argc;
char * argv [];
{
char message [140];
int size, sizex, sizey, redr, greenr, bluer;
unsigned char *image_red, *image_green, *image_blue;
/* Lecture des parametres transmis par Sphinx (Note: sizex = sizey)*/
sphinx_get_para (&sizex,&sizey,&redr,&greenr,&bluer,argv[1],
message,strlen(argv[1]),strlen(message));
printf("taille de l'image en lecture: %d %d\n",sizex,sizey);
printf("plans en lecture: %d %d %d\n",redr,greenr,bluer);
printf("zone message: %s\n",message);
/* Allocation memoire pour les images */
size = sizex * sizey;
image_red = (unsigned char *) malloc(size);
image_blue = (unsigned char *) malloc(size);
image_green = (unsigned char *) malloc(size);
/* Lecture des images transmises par Sphinx (une par plan) */
sphinx_read(argv[1],image_red,image_green,image_blue
,strlen(argv[1]),size,size,size);
/* Traitement de l'image dans chaque banc */
traiter_image(image_blue,sizex);
traiter_image(image_red,sizex);
traiter_image(image_green,sizex);
/* Retour des images vers Sphinx */
sphinx_write(argv[1],image_red,image_green,image_blue
,strlen(argv[1]),size,size,size);
}
/* La fonction de traitement d'une image */
static void draw_grid();
static void traiter_image(image,size)
unsigned char * image;
int size;
{
/* Tracer une grille de largeur 4 pixels par pas de 64 pixels */
int step = 64;
int width = 4;
draw_grid(image,size,step,width);
}
/* Tracer une grille de largeur width pixels par pas de step pixels sur
une image situee a l'adresse image et de taille size */
static void draw_grid_line();
static void draw_grid(image,size,step,width)
unsigned char * image;
int size, step, width;
{
int i, k, line;
for (i = 0; i < size; i+= step)
{
for (k = 0; k < width; k++)
{
if ((line = (i + k)) >= size) break;
draw_grid_line(image,size,step,width,line);
}
}
}
static void draw_grid_line(image,size,step,width,line)
unsigned char * image;
int size, step, width, line;
{
int j, k;
unsigned char * p_line, * p_pixel;
p_line = image + (line * size);
for (j = 0; j < size; j+= step)
{
p_pixel = p_line + j;
for (k = 0; k < width; k++)
{
if ((j + k) >= size) break;
*p_pixel++ = 255;
}
}
}